package com.itheima.dubbo.interfaces;

import com.itheima.commons.pojo.mongo.Comment;
import com.itheima.commons.vo.reception.PageResult;

import java.util.List;

/**
 * @author yaohu
 * @date 2021/12/9
 * @Version 1.0
 * @describe
 */
public interface CommentApi {

    /**
     * 圈子点赞
     *
     * @param comment
     * @return
     */
    Long likeComment(Comment comment);

    /**
     * 取消点赞
     *
     * @param userId
     * @param publishId
     * @return
     */
    Long disLikeComment(Long userId, String publishId);

    /**
     * 查询点赞数
     *
     * @param publishId
     * @return
     */
    Long queryLikeCount(String publishId);

    /**
     * 查询用户是否点赞该动态
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean queryUserIsLike(Long userId, String publishId);

    /**
     * 喜欢
     *
     * @param comment
     * @return
     */
    Long loveComment(Comment comment);

    /**
     * 取消喜欢
     *
     * @param userId
     * @param publishId
     * @return
     */
    Long disLoveComment(Long userId, String publishId);

    /**
     * 查询喜欢数
     *
     * @param publishId
     * @return
     */
    Long queryLoveCount(String publishId);

    /**
     * 查询用户是否喜欢该动态
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean queryUserIsLove(Long userId, String publishId);

    /**
     * 查询某个圈子的评论列表
     *
     * @param publishId
     * @param page
     * @param pageSize
     * @return
     */
    PageResult queryCommentList(String publishId, Integer page, Integer pageSize);

    /**
     * 分页查询某个动态的评论列表,并排序
     *
     * @param publishId  动态id
     * @param page
     * @param pageSize
     * @param sortProp   排序字段 默认评论人id
     * @param sortOrder  排序方式 默认降序
     * @return
     */
    PageResult queryCommentListBySort(String publishId, Integer page, Integer pageSize,String sortProp,
                                      String sortOrder);

    /**
     * 发表文本评论
     *
     * @param comment
     * @return
     */
    Long saveComment(Comment comment);

    /**
     * 查询文本评论数
     *
     * @param publishId
     * @return
     */
    Long queryCommentCount(String publishId);


    /**
     * 根据一个id查询一个评论对象
     *
     * @param publishId
     * @return
     */
    Comment queryCommentById(String publishId);

    /**
     * 分页查询点赞/评论/喜欢列表
     *
     * @param page
     * @param pageSize
     * @param userId 用户id
     * @param commentType 1：点赞 2：评论 3：喜欢
     * @return
     */
    //
    List<Comment> queryCommentListByUserId(Integer page, Integer pageSize, Long userId, int commentType);

    /**
     * desc的排序方式查看评论列表
     * @param userID
     * @param pagesize
     * @param page
     * @param sortProp
     * @param sortOrder
     * @param messageID
     * @return
     */
    PageResult getCommenctList(Object userID, String pagesize, String page, String sortProp, String sortOrder, String messageID);
    /**
     * asc的排序方式查看评论列表
     * @param userID
     * @param pagesize
     * @param page
     * @param sortProp
     * @param sortOrder
     * @param messageID
     * @return
     */
    PageResult getAscCommenctList(Object userID, String pagesize, String page, String sortProp, String sortOrder, String messageID);


}
